package Exam.AttackGame;

import java.util.Random;

//角色类
public class Role {
    private String name;
    private int blood;

    //空参构造
    public Role() {
    }

    //含全部参数构造
    public Role(String name, int blood) {
        this.name = name;
        this.blood = blood;
    }

    /**
     * 获取
     *
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     *
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     *
     * @return blood
     */
    public int getBlood() {
        return blood;
    }

    /**
     * 设置
     *
     * @param blood
     */
    public void setBlood(int blood) {
        this.blood = blood;
    }
    //有两个角色
    //Role r1 = new.Role
    //Role r2 = new.Role
    //r1.攻击(r2)
    //方法的调用者攻击参数

    //创建攻击(受伤害)方法(method)
    public void attack(Role role) {
        //计算造成的伤害
        Random r = new Random();
        int hurt = r.nextInt(20) + 1; //大于0
        int remainBlood = role.getBlood() - hurt; //计算剩余血量
        //保证血量不能为负数
        remainBlood = remainBlood < 0 ? 0 : remainBlood; //如果remainBlood的值小于0，那么就将remainBlood修改为0
        //将剩余血量的值给受伤害的角色
        role.setBlood(remainBlood);
        //因为 this表示本类的地址(包含本类的参数name,attack)
        //故 this表示方法的调用者
        //System.out.println("sb1.举起拳头，打了sb2.一下，造成了x点伤害，sb2.还剩下y点血");
        //this.getName() 方法外name
        //role.getName() 方法内name
        System.out.println(this.getName() + "举起拳头，打了" + role.getName() +
                "一下，造成了" + hurt + "点伤害，"+role.getName()+"还剩下" + remainBlood + "点血");

    }

}
